
#ifndef SHADER_H
#define SHDAER_H

#include <GL/glew.h>
#include <GL/gl.h>
#include <GL/glu.h>

#include <string>

class Shader
{
public:
	//Default constructor
	Shader(){};
	//Constructor with the shader files as input
	Shader(std::string vsFile, std::string fsFile);
	Shader(std::string vsFile, std::string fsFile, std::string gsFile);
	Shader(std::string vsFile, std::string fsFile, std::string gsFile, std::string TessControlFile, std::string TessEvalFile);

	//Destructor
	~Shader();

	void init(std::string vsFile, std::string fsFile);
	void init(std::string vsFile, std::string fsFile, std::string gsFile);
	void init(std::string vsFile, std::string fsFile, std::string gsFile, std::string TessControlFile, std::string TessEvalFile);

	//Bind and unbind shaders i.e decide when to use and not to use the shader in question
	void bind();
	void unbind();

	//Get the shader id
	unsigned int id();

private:
	unsigned int shaderId;
	unsigned int shaderVp;
	unsigned int shaderFp;
	unsigned int shaderGp;
	unsigned int shaderTessCp;
	unsigned int shaderTessEp;

};

#endif